package cn.com.huzo.service.master;

import cn.com.huzo.model.entities.master.MpsItemEntity;
import cn.com.huzo.model.entities.master.MpsItemUsageRuleEntity;
import huzofw.service.GenericManager;
import java.util.List;

/**
 * 主产品计划项目管理服务对象接口。
 *
 * @author 吴旭
 */
public interface MpsItemManager extends GenericManager<MpsItemEntity, Long> {

    /**
     * 取得该用户可操作的计划跟踪项目
     *
     * @param userId 用户ID
     * @return 该用户可操作的计划跟踪项目
     * @throws Exception
     */
    List<MpsItemEntity> fetchAllByUser(Long userId) throws Exception;

    /**
     * 更新项目排列顺序。
     *
     * @param itemList 数据列表
     * @return 影响行数
     * @throws java.lang.Exception
     */
    Integer updateLinesOrder(List<MpsItemEntity> itemList) throws Exception;

    /**
     * 授权项目使用权限
     *
     * @param itemList 权限数据
     * @return 影响行数
     * @throws Exception
     */
    Integer grant(List<MpsItemUsageRuleEntity> itemList) throws Exception;
    
    /**
     * 回收该用户权限
     * @param userId 用户ID
     * @return 影响行数
     * @throws Exception 
     */
    Integer revoke(Long userId) throws Exception;
}
